home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-09-23 | 12.4 KB | 468 lines | [TEXT/KAHL] |
- /*** File: "LeggiFilm_v05.c"
- *
- * Versione 04. Del 16-09-94.
- * Scritto da Cadili Francesco.
- *
- * Legge i dati relativi ad un film da DB.
- * Per evitare casini ogni volta che lavoro con copie settarle a NULL
- * quando non sono più valide !!!!!!
- *
- * La versione 05 aggiunge gli equivalent da tastiera.
- *
- * Devo gestire il bottone di default che cambia e le freccie ....
- *
- **************************************************************************/
- #include <QuickDraw.h>
- #ifndef XTENSION // Francesco 11-11-94
- extern Cursor iBeam;
- #endif
- #include <Menus.h>
- #include <Events.h>
- #include "LeggiFilm_v04.h"
- #define newVersion
-
- /******** Dichiarazioni private ************************/
- /******** Include locali *******************************/
-
- #include "stringUtility_v02.h"
- #include "StrUtilities.h"
- #include "Error.h" // usato per gestire gli errori
- #include "FirstWConst.h"
- #include "Cstring_P_v32.h"
- #define POPUPTIPO
- #ifdef newVersion
- #include "CgestisciDLOGDati_v01.h"
- #include "CgestisciElOrd_v03.h"
- #endif
- /******** Fine Include locali **************************/
- /******** Costanti locali ******************************/
-
- #define kStdFont systemFont
- #define kStdHeight 12
- #define kTextFont geneva
- #define kTextHeight 12 // text Height
- #define kIntestHeight 9
- #ifdef POPUPTIPO
- #define kPopUpTipoID 10150
- #endif
- #define noTitle -1
- #define ours(w) (w == (*data)->theDialog)
- #define kEquiNuovoDato 'N'
-
- #define kEnterKey 0x3
- #define kReturnKey 0xD
- #define kEscKey 0x1B
- #define kTabKey '\t'
- #pragma segment LeggiFilm
- /******** Fine Costanti locali *************************/
- /******** Strutture dati locali ************************/
-
- typedef long **longHandle;
- typedef char **charHandle;
- typedef struct
- {
- short itemNum; // numero di item;
- TEHandle listaNomi; // gestisce la scelta del titolo;
- longHandle posPrimoCar; // la posizione del primo carattere di ogni linea in listaNomi;
- } campoScroll;
- typedef struct
- {
- DialogPtr theDialog; // il puntatore ai dati del DLOG;
- CgestisciDLOGDati *DLOGdesc; // i dati del dialog
- long numeroTit; // il numero dei titoli;
- CPushButton *actDefaultButton;
- CDefPushButton *ricerca;
- } leggiFilmRec;
- typedef leggiFilmRec *leggiFilmPtr, **leggiFilmHdl;
-
- static leggiFilmHdl data = NULL;
-
- /********* Fine Strutture dati locali *******************/
- /******** Funzioni private: ****************************/
-
- int InitData_LeggiFilm(void);
- void azzeraDati_LeggiFilm(void);
- void disegnaTitoli_LeggiFilm(PtrDescrTitolo ptrElTitol);
- long calcolaCarTitoli(HdlDescrTitolo elencoTitoli, short numeroTit);
-
- int aggiungiPStrInArray(unsigned char *pascalStr, long *inizio, char *str);
- void mostaQueryTesto(void);
- void aggiornaBottoneRicerca(void);
- void disattivaTestoInput(void);
- void MaintainCursor2(Cursor *editCursor);
- void mostaTesto3(void);
-
- int AdjustText (void);
- pascal void ScrollProc(ControlHandle theControl, int theCode);
- void activeTextEdit_ListaFilm(short itemHit);
- void initTextData_ListaFilm(short itemHit);
-
- void ClickInScroll_ListaFilm(EventRecord *theEvent);
- void incNomeSel(short offSet);
- void ClickInListaNomi(EventRecord *theEvent);
- void selectTitolo(short titoloScelto);
-
- /******** Fine Funzioni private ************************/
- /******** Fine Dichiarazioni private ********************/
-
- /*** funzione: "Alloca_LeggiFilm"
- *
- * Val OUTPUT: true se tutto ok, false altrimenti.
- *********************************************************/
- int Alloca_LeggiFilm(DialogPtr theDialog)
- {
- short result = true;
-
- if(theDialog == NULL)
- return(false);
-
- data = (leggiFilmHdl)NewHandle(sizeof(leggiFilmRec));
- if (data != NULL) {
- azzeraDati_LeggiFilm();
- (*data)->theDialog = theDialog;
- result = InitData_LeggiFilm();
- } else { // errore in memoria
- SetErrorData(kErrMemoria, 0, "Alloca_LeggiFilm", "allocazione della struttura dati principale", "Errore in memoria");
- result = false;
- }
-
- if (!result)
- Dealloca_LeggiFilm();
- return(result);
- }
-
- /*** funzione: "Dealloca_LeggiFilm"
- *
- * Nota: (bisogna cancellare i CTRL)
- *
- ***************************************/
- void Dealloca_LeggiFilm(void)
- {
- if (data != NULL)
- {
-
- delete (**data).DLOGdesc;
- DisposHandle((Handle)data);
- }
- data = NULL;
- }
-
- /*** Procedura: "azzeraDati_LeggiFilm()"
- *
- * Azzera la struttura dati (presuppone data != NULL).
- *********************************************************/
- void azzeraDati_LeggiFilm(void)
- {
- }
-
- /*** Procedura: "InitData_LeggiFilm()"
- *
- * Inizializza i dati relativi al DLOG.
- * Alloca i campi "posPrimoCar", "listaNomi".
- *
- * Val OUTPUT: true se tutto ok, false altrimenti.
- ***********************************************/
- int InitData_LeggiFilm(void)
- {
- DialogPtr theDialog = (*data)->theDialog;
-
- if (theDialog == NULL)
- return(false);
- (**data).DLOGdesc = new CgestisciDLOGDati;
- if ((**data).DLOGdesc == NULL || (**data).DLOGdesc->IgestisciDLOGDati(theDialog, 129))
- {
- SetErrorData(kErrRisorse, 0, "Alloca_visualizza", "durante la strutturazione della finestra", "Errore in memoria");
- return(false);
- }
-
- /* mette a posto i bottoni */
- (**data).actDefaultButton = new CPushButton;
- (**data).actDefaultButton->IPushButton(theDialog, ok);
- (**data).ricerca = new CDefPushButton;
- (**data).actDefaultButton->IPushButton(theDialog, w1ricerca);
- return(true);
- }
-
- int AdjustText (void)
- {
- return(0);
- }
-
- pascal void ScrollProc (ControlHandle theControl, int theCode)
- {
- }
-
- /*** Procedura "mostaQueryTesto()"
- *
- * Mosta la parte attuale del campo
- ***********************************************/
- void mostaQueryTesto(void)
- {
- }
-
- /*** Procedura: "ClickInRicerca()"
- *
- * Gestisce il click sul bottone ricerca.
- *
- * Val OUTPUT: true se tutto ok, false altrimenti.
- *********************************************************/
- int ClickInRicerca(void)
- {
- short result = true;
- Cstring_P dataStr[3];
-
- (**data).DLOGdesc->cancellaTesto(w1inListaNomi);
- dataStr[0].Istring_P();
- dataStr[0].Ctransfer("Il grande gueriero");
- dataStr[1].Istring_P();
- dataStr[1].Ctransfer("Il grande regista");
- dataStr[2].Istring_P();
- dataStr[2].Ctransfer("1995");
- (**data).DLOGdesc->aggiungiTesto(w1inListaNomi, 3, dataStr);
- dataStr[0].Ctransfer("Il grande gueriero ancora più grande");
- dataStr[1].Ctransfer("Il grande regista (sempre er più)");
- dataStr[2].Ctransfer("1995");
- (**data).DLOGdesc->aggiungiTesto(w1inListaNomi, 3, dataStr);
- dataStr[0].Ctransfer("Il grande gueriero muore");
- dataStr[1].Ctransfer("Il grande regista");
- dataStr[2].Ctransfer("1995");
- (**data).DLOGdesc->aggiungiTesto(w1inListaNomi, 3, dataStr);
- dataStr[0].Ctransfer("Il grande gueriero risorge");
- dataStr[1].Ctransfer("Il grande regista");
- dataStr[2].Ctransfer("1995");
- (**data).DLOGdesc->aggiungiTesto(w1inListaNomi, 3, dataStr);
- dataStr[0].Ctransfer("Il grande gueriero combatte");
- dataStr[1].Ctransfer("Il grande regista");
- dataStr[2].Ctransfer("1995");
- (**data).DLOGdesc->aggiungiTesto(w1inListaNomi, 3, dataStr);
- dataStr[0].Ctransfer("Il grande gueriero fugge");
- dataStr[1].Ctransfer("Il grande regista");
- dataStr[2].Ctransfer("1995");
- (**data).DLOGdesc->aggiungiTesto(w1inListaNomi, 3, dataStr);
- dataStr[0].Ctransfer("Il grande gueriero ci ha proprio rotto le ...");
- dataStr[1].Ctransfer("Il grande regista");
- dataStr[2].Ctransfer("1995");
- (**data).DLOGdesc->aggiungiTesto(w1inListaNomi, 3, dataStr);
- dataStr[0].Ctransfer("Il grande gueriero I");
- dataStr[1].Ctransfer("Il grande regista");
- dataStr[2].Ctransfer("1995");
- (**data).DLOGdesc->aggiungiTesto(w1inListaNomi, 3, dataStr);
- dataStr[0].Ctransfer("Il grande gueriero II");
- dataStr[1].Ctransfer("Il grande regista");
- dataStr[2].Ctransfer("1995");
- (**data).DLOGdesc->aggiungiTesto(w1inListaNomi, 3, dataStr);
- dataStr[0].Ctransfer("Il grande gueriero III");
- dataStr[1].Ctransfer("Il grande regista");
- dataStr[2].Ctransfer("1995");
- (**data).DLOGdesc->aggiungiTesto(w1inListaNomi, 3, dataStr);
- return(result);
- }
-
- /*** Procedura: "disegnaTitoli_LeggiFilm(ptrElTitol)"
- *
- * Disegna i dati sulle varie liste
- * Attenzione accede ai dati di DescrTitolo in modo non ortodosso
- * Si suppone che i dati siano Str255 e memorizzati all'inizio della
- * struttura e nella giusta sequenza.
- *
- * Par INPUT: "ptrElTitol" i dati da porre nella lista.
- **************************************************************************/
- void disegnaTitoli_LeggiFilm(PtrDescrTitolo ptrElTitol)
- {
- Cstring_P dataStr[3];
- char *str = NULL;
-
- dataStr[0].Istring_P();
- dataStr[1].Istring_P();
- dataStr[2].Istring_P();
- dataStr[0].Ptransfer(ptrElTitol->titolo);
- dataStr[1].Ptransfer(ptrElTitol->regia);
- dataStr[2].Ptransfer(ptrElTitol->annoProd);
- (**data).DLOGdesc->aggiungiTesto(w1inListaNomi, 3, dataStr);
- }
-
- /*** Procedura: "ClickInOk()"
- *
- * Gestisce il click sul bottone ricerca.
- *
- * Val OUTPUT: true se tutto ok, false altrimenti.
- *********************************************************/
- int ClickInOk(PtrDescrFilm descrizione)
- {
- return(false);
- }
-
- /*** Procedura: "ClickInTokenItem(&theEvent)"
- *
- * Gestisce gli eventi nel campo "input token".
- *
- * Par INPUT: 'theEvent' il puntatore al record dell'evento attuale;
- ************************************************************************/
- void ClickInTokenItem(EventRecord *theEvent)
- {
- }
-
- void ClickInScroll_ListaFilm(EventRecord *theEvent)
- {
- }
-
- /*** Disattiva il testo di input
- *
- * Non viene più usata ... (vedi)
- *
- * activeTextEdit_ListaFilm,
- * initTextData_ListaFilm.
- *
- *****************************************/
- void disattivaTestoInput(void)
- {
- }
-
- /*** activeField(short itemHit);
- *
- * Attiva un textEdit.
- *
- * Par INPUT: 'itemHit' l'item del dialog su cui l'utente ha cliccato.
- *
- ************************************************************************/
- void activeTextEdit_ListaFilm(short itemHit)
- {
- }
-
- /*** Procedure: "initTextData_ListaFilm(short itemHit)
- *
- * Inizializza i dati relativi ad un text Edit
- *
- * Par INPUT: 'itemHit' il numero di item.
- ********************************************************/
- void initTextData_ListaFilm(short itemHit)
- {
- }
-
- /*** Modifica il cursore
- *****************************************/
- void MaintainCursor2(Cursor *editCursor)
- {
- }
-
- /*** Procedura: "aggiornaBottoneRicerca(void)"
- *
- * Aggiorna il bottone della ricerca.
- ************************************************************************/
- void aggiornaBottoneRicerca(void)
- {
- }
-
- /*** Procedura: "ClickInListaNomi(EventRecord &theEvent)"
- *
- * Gestisce i "mouse Event" nel campo "ListaNomi".
- * L' attivazione/disabilitazione del bottone ok
- * è gestita da questa procedura.
- ************************************************************/
- void ClickInListaNomi(EventRecord *theEvent)
- {
- }
-
- /*** Incrementa il titoloScelto di "offSet"
- *****************************************************/
- void incNomeSel(short offSet)
- {
- }
-
- /*** Seleziona l'item richiesto
- *
- * Par INPUT: 'titoloScelto' il titolo scelto.
- * Seleziona il titolo supponendo che i dati
- * contenuti nei campi 'titoloAlto' etc siano
- * corretti.
- *
- *********************************************************/
- void selectTitolo(short titoloScelto)
- {
- }
-
- /*** Procedura: "LeggiFilm_updateEvt()"
- *
- * Gestisce l'updateEvt nei campi definiti come "user"
- * (inListaNomi, inScrollBar)
- **********************************************************/
- void LeggiFilm_updateEvt(void)
- {
- GrafPtr port;
- DialogPtr theDialog = (*data)->theDialog;
-
- GetPort(&port);
- SetPort((GrafPtr)theDialog);
- BeginUpdate(theDialog);
- (**data).DLOGdesc->updateEvt();
- DrawDialog(theDialog);
- EndUpdate(theDialog);
- SetPort(port);
- }
-
-
- void FirstWindowIdle(DialogPtr theDialog)
- {
- if (theDialog == (*data)->theDialog)
- (**data).DLOGdesc->idle();
- }
- /* end FirstWindowIdle */
-
- void FirstWindowCursor(DialogPtr theDialog, Point pt)
- {
- }
- /* end FirstWindowCursor */
-
-
- short FirstWindowKeyDown(DialogPtr theDialog, EventRecord *theEvent)
- {
- short itemHit;
-
- itemHit = (**data).DLOGdesc->gestEvent(theEvent);
- if (itemHit != -1)
- return(itemHit);
-
- if (IsDialogEvent(theEvent))
- {
- short pos;
- Boolean status;
-
- DialogSelect(theEvent, &theDialog, &itemHit);
- (**data).DLOGdesc->itemSelect(theEvent, itemHit, &pos, &status);
- switch(itemHit)
- {
- case w1inListaNomi:
- break;
- case w1tokenItem:
- case w1ricerca:
- case w1nuovo:
- return(itemHit);
- break;
- case w1tipoPopUpItem:
- {
- if (status)
- {
- CGestisciMenu *popUps;
- MenuHandle menuHdl;
- short menuID;
- short pos;
-
- popUps = (**data).DLOGdesc->getPopUp(w1tipoPopUpItem);
- popUps->menuChoiceData(&menuHdl, &menuID, &pos);
- (**data).DLOGdesc->cancellaTesto(w1secondtokenItem);
- (**data).DLOGdesc->cancellaTesto(w1tokenItem);
- }
- break;
- }
- case ok:
- return(ok);
- break;
- case cancel:
- return(cancel);
- break;
- }
- }
- return(-1);
- }
- /* end FirstWindowKeyDown */
-